/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uccart_project.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;


@Entity
@Table(name = "estudiante")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Estudiante.findAll", query = "SELECT e FROM Estudiante e"),
    @NamedQuery(name = "Estudiante.findByEstId", query = "SELECT e FROM Estudiante e WHERE e.estId = :estId"),
    @NamedQuery(name = "Estudiante.findByEstNombre", query = "SELECT e FROM Estudiante e WHERE e.estNombre = :estNombre"),
    @NamedQuery(name = "Estudiante.findByEstApellido1", query = "SELECT e FROM Estudiante e WHERE e.estApellido1 = :estApellido1"),
    @NamedQuery(name = "Estudiante.findByEstApellido2", query = "SELECT e FROM Estudiante e WHERE e.estApellido2 = :estApellido2"),
    @NamedQuery(name = "Estudiante.findByEstCelular", query = "SELECT e FROM Estudiante e WHERE e.estCelular = :estCelular"),
    @NamedQuery(name = "Estudiante.findByEstTelefono", query = "SELECT e FROM Estudiante e WHERE e.estTelefono = :estTelefono"),
    @NamedQuery(name = "Estudiante.findByEstCorreo", query = "SELECT e FROM Estudiante e WHERE e.estCorreo = :estCorreo"),
    @NamedQuery(name = "Estudiante.findByEstStatus", query = "SELECT e FROM Estudiante e WHERE e.estStatus = :estStatus"),
    @NamedQuery(name = "Estudiante.findByEstBecado", query = "SELECT e FROM Estudiante e WHERE e.estBecado = :estBecado"),
    @NamedQuery(name = "Estudiante.findByEstDireccion", query = "SELECT e FROM Estudiante e WHERE e.estDireccion = :estDireccion"),
    @NamedQuery(name = "Estudiante.findByEstNacionalidad", query = "SELECT e FROM Estudiante e WHERE e.estNacionalidad = :estNacionalidad"),
    @NamedQuery(name = "Estudiante.findByEstGenero", query = "SELECT e FROM Estudiante e WHERE e.estGenero = :estGenero"),
    @NamedQuery(name = "Estudiante.findByEstNacimiento", query = "SELECT e FROM Estudiante e WHERE e.estNacimiento = :estNacimiento"),
    @NamedQuery(name = "Estudiante.findByEstTrabajo", query = "SELECT e FROM Estudiante e WHERE e.estTrabajo = :estTrabajo")})
public class Estudiante implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "est_id")
    private String estId;
    @Basic(optional = false)
    @Column(name = "est_nombre")
    private String estNombre;
    @Basic(optional = false)
    @Column(name = "est_apellido1")
    private String estApellido1;
    @Basic(optional = false)
    @Column(name = "est_apellido2")
    private String estApellido2;
    @Column(name = "est_celular")
    private Integer estCelular;
    @Column(name = "est_telefono")
    private Integer estTelefono;
    @Column(name = "est_correo")
    private String estCorreo;
    @Basic(optional = false)
    @Column(name = "est_status")
    private short estStatus;
    @Column(name = "est_becado")
    private Boolean estBecado;
    @Basic(optional = false)
    @Column(name = "est_direccion")
    private String estDireccion;
    @Basic(optional = false)
    @Column(name = "est_nacionalidad")
    private String estNacionalidad;
    @Column(name = "est_genero")
    private Boolean estGenero;
    @Basic(optional = false)
    @Column(name = "est_nacimiento")
    @Temporal(TemporalType.DATE)
    private Date estNacimiento;
    @Column(name = "est_trabajo")
    private String estTrabajo;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "estudiante")
    private List<Nota> notaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "padIdestudiante")
    private List<Padron> padronList;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "estudiante")
    private Contrasenas contrasenas;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "estudiante")
    private Beca beca;
    @JoinColumn(name = "est_codtitulo", referencedColumnName = "tit_codigo")
    @ManyToOne
    private Titulo estCodtitulo;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "cobroCodestudiante")
    private List<Cobro> cobroList;

    public Estudiante() {
    }

    public Estudiante(String estId) {
        this.estId = estId;
    }

    public Estudiante(String estId, String estNombre, String estApellido1, String estApellido2, short estStatus, String estDireccion, String estNacionalidad, Date estNacimiento) {
        this.estId = estId;
        this.estNombre = estNombre;
        this.estApellido1 = estApellido1;
        this.estApellido2 = estApellido2;
        this.estStatus = estStatus;
        this.estDireccion = estDireccion;
        this.estNacionalidad = estNacionalidad;
        this.estNacimiento = estNacimiento;
    }

    public String getEstId() {
        return estId;
    }

    public void setEstId(String estId) {
        this.estId = estId;
    }

    public String getEstNombre() {
        return estNombre;
    }

    public void setEstNombre(String estNombre) {
        this.estNombre = estNombre;
    }

    public String getEstApellido1() {
        return estApellido1;
    }

    public void setEstApellido1(String estApellido1) {
        this.estApellido1 = estApellido1;
    }

    public String getEstApellido2() {
        return estApellido2;
    }

    public void setEstApellido2(String estApellido2) {
        this.estApellido2 = estApellido2;
    }

    public Integer getEstCelular() {
        return estCelular;
    }

    public void setEstCelular(Integer estCelular) {
        this.estCelular = estCelular;
    }

    public Integer getEstTelefono() {
        return estTelefono;
    }

    public void setEstTelefono(Integer estTelefono) {
        this.estTelefono = estTelefono;
    }

    public String getEstCorreo() {
        return estCorreo;
    }

    public void setEstCorreo(String estCorreo) {
        this.estCorreo = estCorreo;
    }

    public short getEstStatus() {
        return estStatus;
    }

    public void setEstStatus(short estStatus) {
        this.estStatus = estStatus;
    }

    public Boolean getEstBecado() {
        return estBecado;
    }

    public void setEstBecado(Boolean estBecado) {
        this.estBecado = estBecado;
    }

    public String getEstDireccion() {
        return estDireccion;
    }

    public void setEstDireccion(String estDireccion) {
        this.estDireccion = estDireccion;
    }

    public String getEstNacionalidad() {
        return estNacionalidad;
    }

    public void setEstNacionalidad(String estNacionalidad) {
        this.estNacionalidad = estNacionalidad;
    }

    public Boolean getEstGenero() {
        return estGenero;
    }

    public void setEstGenero(Boolean estGenero) {
        this.estGenero = estGenero;
    }

    public Date getEstNacimiento() {
        return estNacimiento;
    }

    public void setEstNacimiento(Date estNacimiento) {
        this.estNacimiento = estNacimiento;
    }

    public String getEstTrabajo() {
        return estTrabajo;
    }

    public void setEstTrabajo(String estTrabajo) {
        this.estTrabajo = estTrabajo;
    }

    @XmlTransient
    public List<Nota> getNotaList() {
        return notaList;
    }

    public void setNotaList(List<Nota> notaList) {
        this.notaList = notaList;
    }

    @XmlTransient
    public List<Padron> getPadronList() {
        return padronList;
    }

    public void setPadronList(List<Padron> padronList) {
        this.padronList = padronList;
    }

    public Contrasenas getContrasenas() {
        return contrasenas;
    }

    public void setContrasenas(Contrasenas contrasenas) {
        this.contrasenas = contrasenas;
    }

    public Beca getBeca() {
        return beca;
    }

    public void setBeca(Beca beca) {
        this.beca = beca;
    }

    public Titulo getEstCodtitulo() {
        return estCodtitulo;
    }

    public void setEstCodtitulo(Titulo estCodtitulo) {
        this.estCodtitulo = estCodtitulo;
    }

    @XmlTransient
    public List<Cobro> getCobroList() {
        return cobroList;
    }

    public void setCobroList(List<Cobro> cobroList) {
        this.cobroList = cobroList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (estId != null ? estId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Estudiante)) {
            return false;
        }
        Estudiante other = (Estudiante) object;
        if ((this.estId == null && other.estId != null) || (this.estId != null && !this.estId.equals(other.estId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.uccart_project.model.Estudiante[ estId=" + estId + " ]";
    }
    
}
